Page({

  /**
   * 页面的初始数据
   */
  data: {
    dataArr:[
      {
        selected:true,
        image:"/images/detail.png",
        price:"55",
        num:"1",
        title:"日本原装进口雪玉锅，可炖、煮、炸、凉拌的网红万用锅"
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getTotalPrice();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  },
  // 统计总价
  getTotalPrice() {
    // 获取购物车列表
    let dataArr = this.data.dataArr;
    let total = 0;
    // 循环列表
    for (let i = 0; i < dataArr.length; i++) {
      // 判断选中才会计算价格
      if (dataArr[i].selected) {
        // 所有价格加起来
        total += dataArr[i].num * dataArr[i].price;
      }
    }
    // 赋值到data中渲染到页面
    this.setData({
      dataArr: dataArr,
      totalPrice: total.toFixed(2)
    });
  },
  selectList(e) {
    // 获取data- 传进来的index
    let index = e.currentTarget.dataset.index;
    // 获取购物车列表
    let dataArr = this.data.dataArr;
    // 获取当前商品的选中状态
    let selected = dataArr[index].selected;
    // 改变状态
    dataArr[index].selected = !selected;
    this.setData({
      dataArr: dataArr
    });

    // 改变全选状态
    for (var i = 0; i < this.data.dataArr.length; i++) {
      // 当状态为全选时，每个元素其中有一个为false，则取消全选
      // 当状态为非全选时，每个元素都为true，则全选
      if (this.data.selectAllStatus) {
        if (!this.data.dataArr[i].selected) {
          this.setData({
            selectAllStatus: false
          });
          break;
        }
      } else {
        if (this.data.dataArr[i].selected) {
          this.setData({
            selectAllStatus: true
          });
        } else {
          this.setData({
            selectAllStatus: false
          });
          break;
        }
      }
    }

    // 重新统计总价
    this.getTotalPrice();
  },
  // 全选事件
  selectAll(e) {
    // 是否全选状态
    let selectAllStatus = this.data.selectAllStatus;
    selectAllStatus = !selectAllStatus;
    let dataArr = this.data.dataArr;
    for (let i = 0; i < dataArr.length; i++) {
      // 改变所有商品状态
      dataArr[i].selected = selectAllStatus;
    }
    this.setData({
      selectAllStatus: selectAllStatus,
      dataArr: dataArr
    });
    // 重新统计总价
    this.getTotalPrice();
  },

  // 增加数量
  addCount(e) {
    let index = e.currentTarget.dataset.index;
    let dataArr = this.data.dataArr;
    let num = dataArr[index].num;
    num = num + 1;
    dataArr[index].num = num;
    this.setData({
      dataArr: dataArr
    });
    // 重新统计总价
    this.getTotalPrice();
  },

  // 减少数量
  minusCount(e) {
    let index = e.currentTarget.dataset.index;
    let dataArr = this.data.dataArr;
    let num = dataArr[index].num;
    if (num <= 1) {
      wx.showToast({
        title: '宝贝不能再减少啦',
        icon: 'none'
      })
      return false;
    }
    num = num - 1;
    dataArr[index].num = num;
    this.setData({
      dataArr: dataArr
    });
    // 重新统计总价
    this.getTotalPrice();
  },
  // 输入数量
  inputCount(e) {
    let index = e.currentTarget.dataset.index;
    let dataArr = this.data.dataArr;
    let num = e.detail.value;
    dataArr[index].num = num;
    this.setData({
      dataArr: dataArr
    });
    // 重新统计总价
    this.getTotalPrice();
  },

  // 失去焦点时判断数量是否小于1
  bindblur(e) {
    let index = e.currentTarget.dataset.index;
    let dataArr = this.data.dataArr;
    let num = e.detail.value;
    if (num < 1) {
      wx.showToast({
        title: '数量不能小于1',
        icon: 'none'
      })
      num = 1;
      dataArr[index].num = num;
      this.setData({
        dataArr: dataArr
      });
      // 重新统计总价
      this.getTotalPrice();
    }
  },
  deleteList(e) {
    const index = e.currentTarget.dataset.index;
    let dataArr = this.data.dataArr;
    dataArr.splice(index, 1);              // 删除购物车列表里这个商品
    this.setData({
      dataArr: dataArr
    });
    if (!dataArr.length) {                  // 如果购物车为空
      this.setData({
        hasList: false           // 修改标识为false，显示购物车为空页面
      });
      this.getTotalPrice();  
    } else {                              // 如果不为空
      this.getTotalPrice();         // 重新计算总价格
    }
  },
  // 去结算
  toOrder() {
    // 跳转结算页面
    wx.navigateTo({
      url: '/pages/account/account'
    })
  },
})